package cz.possoft.serializable.dama.game;

import cz.possoft.serializable.dama.figurky.DamaDama;
import cz.possoft.serializable.dama.figurky.DamaFigurka;
import cz.possoft.serializable.dama.figurky.DamaKamen;
import cz.possoft.serializable.dama.figurky.DamaPrazdna;
import cz.possoft.serializable.generic.HraciPole;

/**
 * Predstavuje sachovnici pro hru dama
 *
 * @author mara
 */
public class DamaPole extends HraciPole {
	
	public static final long serialVersionUID = 100458945;
	
	private DamaFigurka figurky[][];
	
    public DamaPole(boolean novaHra) {
        setFigurky(new DamaFigurka[8][8]);        
        if (novaHra) { 
        	loadFigurkyAfterNewGame(); 
                   }
        else { loadEmptySachovnice(); }        
    }  
    
    public DamaFigurka[][] getFigurky() {
        return figurky;
    }

    public void setFigurky(DamaFigurka[][] figurky) {
        this.figurky = figurky;
    }
    
    // vraci figurku na dane pozici
    public DamaFigurka getFigurka(int x, int y) {
        return figurky[x][y];
    }
    
    // nasetuje figurku na dane pozici
    public void setFigurka(int x, int y, DamaFigurka fig) {
        figurky[x][y] = fig;
    }   
    
    // nastavi figurku podle toho, ze pesel dosel na konec
    public DamaFigurka setDamaFromPesecDosel(int x, int y, int color) {
    try {
                DamaDama fig = new DamaDama();
                fig.setColor(color);
                fig.setX(x);
                fig.setY(y);
                fig.setMarkedForPlay(false);
                fig.setRing(false);                
                fig.setSachovnice(this);                
                setFigurka(x, y, fig);                                
                return fig;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
      } 
    
    // nacteni prazdne sachovnice
    public void loadEmptySachovnice() {
        // nacteni prazdnych
        for (int i=0;i<8;i++)
            for (int j=0;j<8;j++) getFigurky()[j][i]=new DamaPrazdna(j,i,this);
    }    
    
    // Pocatecni nacteni figurek na sachovnici po startu nove hry
    public void loadFigurkyAfterNewGame() {
        // TODO : implementovat
        for (int i=0;i<8;i++)
            for (int j=0;j<8;j++) getFigurky()[j][i] = new DamaPrazdna(j,i,this);    	

        for (int i=0; i<3; i++)
            for (int j=0;j<8;j++) {
            	if ((i+j) % 2 == 1) {
            		getFigurky()[j][i] = new DamaKamen(j,i,1,this);            	
            	}
            	else {
            		getFigurky()[j][i] = new DamaPrazdna(j,i,this);            	
            	}
            }            	
        
        // nacteni prazdnych
        for (int i=3 ; i<5 ; i++)
            for (int j=0 ; j<8 ; j++) getFigurky()[j][i] = new DamaPrazdna(j,i,this);
        
        // nacteni bilych
        for (int i=5; i<8; i++)
            for (int j=0;j<8;j++) {
            	if ((i+j) % 2 == 1) {
            		getFigurky()[j][i] = new DamaKamen(j,i,2,this);            	
            	}
            	else {
            		getFigurky()[j][i] = new DamaPrazdna(j,i,this);            	
            	}
            }                
    }    

}
